/* ==================================================================   
 * Created [2009-4-27 下午11:32:55] by Jon.King 
 * ==================================================================  
 * TSS 
 * ================================================================== 
 * mailTo:jinpujun@hotmail.com
 * Copyright (c) Jon.King, 2009-2012 
 * ================================================================== 
 */

package com.jinhe.tss.component.support.web.webwork;

import javax.servlet.http.HttpServletResponse;

import com.jinhe.tss.core.exception.ExceptionEncoder;
import com.jinhe.tss.core.sso.context.Context;
import com.opensymphony.xwork.Action;
import com.opensymphony.xwork.ActionInvocation;
import com.opensymphony.xwork.interceptor.Interceptor;

/**
 * <p>
 * CatchExceptionInterceptor.java
 * </p>
 * 该拦截器截获Action产生的所有的异常，并以数据流方式将异常信息返回给客户端。
 *
 */
public class CatchExceptionInterceptor implements Interceptor {

    private static final long serialVersionUID = -4301377671254468885L;

    public void destroy() { }

    public void init() { }

    /**
     * 拦截异常，处理错误信息
     */
    public String intercept(ActionInvocation actionInvocation) throws Exception {
        String result = Action.NONE;
        HttpServletResponse response = Context.getResponse();
        try {
            result = actionInvocation.invoke();
        } catch (Exception t) {
            ExceptionEncoder.encodeException(response, t);
        }
        return result;
    }
}
